/*
	Mosaic - Sliding Boxes and Captions jQuery Plugin
	Version 1.0.1
	www.buildinternet.com/project/mosaic

	By Sam Dunn / One Mighty Roar (www.onemightyroar.com)
	Released under MIT License / GPL License
*/

;(function (a) {
  if (!a.omr) {
    a.omr = new Object()
  }
  a.omr.mosaic = function (c, b) {
    var d = this
    d.$el = a(c)
    d.el = c
    d.$el.data('omr.mosaic', d)
    d.init = function () {
      d.options = a.extend({}, a.omr.mosaic.defaultOptions, b)
      d.load_box()
    }
    d.load_box = function () {
      if (d.options.preload) {
        a(d.options.backdrop, d.el).hide()
        a(d.options.overlay, d.el).hide()
        a(window).load(function () {
          if (
            d.options.options.animation == 'fade' &&
            a(d.options.overlay, d.el).css('opacity') == 0
          ) {
            a(d.options.overlay, d.el).css('filter', 'alpha(opacity=0)')
          }
          a(d.options.overlay, d.el).fadeIn(200, function () {
            a(d.options.backdrop, d.el).fadeIn(200)
          })
          d.allow_hover()
        })
      } else {
        a(d.options.backdrop, d.el).show()
        a(d.options.overlay, d.el).show()
        d.allow_hover()
      }
    }
    d.allow_hover = function () {
      switch (d.options.animation) {
        case 'fade':
          a(d.el).hover(
            function () {
              a(d.options.overlay, d.el)
                .stop()
                .fadeTo(d.options.speed, d.options.opacity)
            },
            function () {
              a(d.options.overlay, d.el).stop().fadeTo(d.options.speed, 0)
            }
          )
          break
        case 'slide':
          startX =
            a(d.options.overlay, d.el).css(d.options.anchor_x) != 'auto'
              ? a(d.options.overlay, d.el).css(d.options.anchor_x)
              : '0px'
          startY =
            a(d.options.overlay, d.el).css(d.options.anchor_y) != 'auto'
              ? a(d.options.overlay, d.el).css(d.options.anchor_y)
              : '0px'
          var f = {}
          f[d.options.anchor_x] = d.options.hover_x
          f[d.options.anchor_y] = d.options.hover_y
          var e = {}
          e[d.options.anchor_x] = startX
          e[d.options.anchor_y] = startY
          a(d.el).hover(
            function () {
              a(d.options.overlay, d.el).stop().animate(f, d.options.speed)
            },
            function () {
              a(d.options.overlay, d.el).stop().animate(e, d.options.speed)
            }
          )
          break
      }
    }
    d.init()
  }
  a.omr.mosaic.defaultOptions = {
    animation: 'fade',
    speed: 150,
    opacity: 1,
    preload: 0,
    anchor_x: 'left',
    anchor_y: 'bottom',
    hover_x: '0px',
    hover_y: '0px',
    overlay: '.mosaic-overlay',
    backdrop: '.mosaic-backdrop',
  }
  a.fn.mosaic = function (b) {
    return this.each(function () {
      new a.omr.mosaic(this, b)
    })
  }
})(jQuery)
